/**
 * [...number] 
 * 
 * 作用：将 N 个 数字 相加
 * 
 * @return {Number}
 */
export function sum(...args) {
  return args.reduce((accumulate, currentValue) => accumulate + currentValue);
}


// 写 N 个函数
const VERSION = '0.0.2';
export default VERSION;


// 需求：用 Map 实现
// export class Students {
//   constructor(list) {
//     this.data = list;
//   }

//   getPerson(name) {

//     const map = new Map();
//     // 将 list 中的数据，以 key 为 item.name ，value 为 item 的形式，加入到 map 中
//     this.data.forEach(item => map.set(item.name, item));

//     return map.get(name); // 获取 mao 中 key 为  name 的 value 值
//   }
// }

// 优化 上面的代码
export class Students {
  constructor(list) {
    this.data = list;

    // 注：将 1）初始化new Map 2）赋值 提取到 这里
      // 因为 new Students 执行一次 初始化+赋值即可
    this.map = new Map();

    // 赋值：为 map set 值
    this.data.forEach(item => this.map.set(item.name, item));
  }

  getPerson(name) {
    return this.map.get(name); // 获取 mao 中 key 为  name 的 value 值
  }
}
